import pandas as pd  
import numpy as np  
from sklearn.model_selection import train_test_split  
from sklearn.ensemble import RandomForestRegressor  # 修改为回归器  
  
# 从CSV文件中读取数据，并设置列名  
steel_data = pd.read_csv('data.csv', header=None, names=['带钢厚度', '带钢宽度', '碳含量', '硅含量', '带钢速度', '加热炉温度', '均热炉温度', '缓冷炉温度', '过时效炉温度', '快冷炉温度', '淬火炉温度', '平整机张力', '硬度'])  
  
# 检查并处理非数值型数据  
steel_data = steel_data.apply(pd.to_numeric, errors='coerce')  
  
# 检查硬度列中的NaN值  
if steel_data['硬度'].isnull().any():  
    # 使用均值填充NaN值  
    steel_data['硬度'].fillna(steel_data['硬度'].mean(), inplace=True)  
  
# 划分特征和目标变量  
x = steel_data.iloc[:, :-1].values  # 所有列除了最后一列  
y = steel_data.iloc[:, -1].values  # 最后一列  
  
# 划分训练集和测试集  
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=0)  
  
# 使用随机森林回归模型  # 修改为回归模型  
forest = RandomForestRegressor(n_estimators=10000, random_state=0, n_jobs=-1)  
forest.fit(x_train, y_train)  
  
# 获取特征重要性  
importances = forest.feature_importances_  
indices = np.argsort(importances)[::-1]  
  
# 打印特征重要性  
for f in range(x_train.shape[1]):  
    print("%2d) %-*s %f" % (f + 1, 30, steel_data.columns[indices[f]], importances[indices[f]]))